複数のドメイン名を持つ DHCP オプションセットを CloudFormation で作成してみた
たぬき( @tanuki_tzp )です。
複数のドメイン名を持つ、DHCP オプションセットを CloudFormation で作成したくなったので、テンプレートを作成しました。
DHCP オプションセットについて
DHCP オプションセットでは、複数のドメインをスペース区切りで設定することができます。
ただし、OS のタイプによっては、複数ドメインとして判定されず、単一のドメインとして判定されてしまう場合があるため注意してください。
一部の Linux オペレーティングシステムでは、複数のドメイン名をスペースで区切って指定できます。ただし、他の Linux オペレーティングシステムや Windows では、この値は単一のドメインとして処理されるため、予期しない動作の原因となります。DHCP オプションセットが、すべて同じオペレーティングシステムを実行しているわけではないインスタンスを含む VPC に関連付けられている場合は、ドメイン名を 1 つだけ指定します。
CloudFormation テンプレート
早速、テンプレートです。
AWSTemplateFormatVersion: '2010-09-09' Description: Create Dhcp Parameters: Hostzone: Type: String Resources: DhcpOptions: Type: AWS::EC2::DHCPOptions Properties: DomainName: !Join ["", ["ap-northeast-1.compute.internal ", !Ref Hostzone]] DomainNameServers: - AmazonProvidedDNS
このテンプレートでは、デフォルトの"ap-northeast-1.compute.internal"と、追加のホストゾーンの 2 つのドメインを設定しています。
DomainName で Sub 関数を使用してしまうと配列として判定されてしまいエラーになってしまうので、Join 関数を使用するのがコツです。
実際の実行結果は以下です。
(※検証として、"test.test"をドメイン名として設定しています)
終わりに
私はよく Sub 関数を使用しているので、Sub 関数が配列として判定されてしまうのがハマりどころでした。
DHCPオプションセットを特殊パターンで作成したいタイミングはなかなかないかと思いますが、いつか誰かのお役に立てれば幸いです。